package com.hbnu.system.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hbnu.system.core.base.CommonPage;
import com.hbnu.system.model.dto.AwardAddDTO;
import com.hbnu.system.model.dto.AwardDTO;
import com.hbnu.system.model.dto.CheckBackDTO;
import com.hbnu.system.model.dto.SearchPageDTO;
import com.hbnu.system.model.entity.Award;
import com.hbnu.system.model.query.AwardPageQuery;
import com.hbnu.system.model.vo.AwardVO;

import java.io.IOException;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author ${author}
 * @since 2023-05-16
 */
public interface IAwardService extends IService<Award> {
    /**
     * 新增成果
     *
     * @param award
     * @return 是否成功
     */
    boolean addAward(Award award);

    AwardDTO getAwardDTOById(String awardID);

    /**
     * 新增成果
     *
     * @param AwardAddDTO
     * @return 是否成功
     */
    boolean addAward(AwardAddDTO AwardAddDTO);


    /**
     * 删除成果
     */

    /**
     * 修改成果
     *
     * @param award
     * @return 是否成功
     */
    boolean updateAward(Award award);

    /**
     * 论文VO分页查看
     */

    /**
     * 根据论文主键查询论文
     *
     * @param awardID
     * @return Paper
     */
    Award getAward(String awardID);

    /**
     * 论文名称查重
     *
     * @param awardname
     * @return 是否重复
     */
    boolean checkAwardName(String awardname);


    /**
     * 分页查询
     */
    IPage<Award> pageCondition(SearchPageDTO searchPageDTO);

    /**
     * 通过id获得Awardvo
     */
    AwardVO getAwardVO(String id);

    /**
     * 院级审核通过
     */
    Boolean collegeCheckPass(String token,String PID);

    /**
     * 院级审核打回
     */
    Boolean collegeCheckBack(String token,CheckBackDTO checkBackDTO);

    /**
     * 校级审核通过
     */
    Boolean schoolCheckPass(String token,String PID);

    /**
     * 校级审核打回
     */
    Boolean schoolCheckBack(String token,CheckBackDTO checkBackDTO);
    /**
     * 删除成果
     * @return
     */
    boolean deleteaward(String ID) throws IOException;
    /**
     * 成果再度提交
     */
    Boolean ReCommitAward(String id);
    
    /**
     * 奖励撤回
     * 只有在院级审核状态才能撤回，撤回后状态变为草稿
     */
    Boolean withdrawAward(String id);

    /**
     * 普通用户分页查看与自己相关的论文
     */
//    IPage<Award> userGetRelateAward(UserDTO userDTO);
    CommonPage<AwardVO> userGetRelateAward(AwardPageQuery awardPageQuery);

    /***
     * 提供合计数据
     *
     */
//    float[] getFigure(UserDTO userDTO);

    CommonPage<Award> export(AwardPageQuery awardPageQuery);
}
